import CryptoJS from "crypto-js";

// 配置：密钥（key）和偏移量（iv）需为 16 位字符串（AES-128 要求）
const SECRET_KEY = CryptoJS.enc.Utf8.parse("1234567890abcdef"); // 自定义密钥（16位）
const SECRET_IV = CryptoJS.enc.Utf8.parse("abcdef1234567890"); // 自定义偏移量（16位）

/**
 * AES 加密
 * @param {string} data - 要加密的字符串
 * @returns {string} 加密后的 Base64 字符串
 */
export function encrypt(data) {
  if (!data) return "";
  try {
    const encrypted = CryptoJS.AES.encrypt(
      CryptoJS.enc.Utf8.parse(data),
      SECRET_KEY,
      {
        iv: SECRET_IV,
        mode: CryptoJS.mode.CBC, // 加密模式
        padding: CryptoJS.pad.Pkcs7, // 填充方式
      }
    );
    return encrypted.ciphertext.toString(CryptoJS.enc.Base64);
  } catch (err) {
    console.error("加密失败：", err);
    return "";
  }
}

/**
 * AES 解密
 * @param {string} encryptedData - 加密后的字符串
 * @returns {string} 解密后的原始字符串
 */
export function decrypt(encryptedData) {
  if (!encryptedData) return "";
  try {
    const ciphertext = CryptoJS.enc.Base64.parse(encryptedData);
    const decrypted = CryptoJS.AES.decrypt({ ciphertext }, SECRET_KEY, {
      iv: SECRET_IV,
      mode: CryptoJS.mode.CBC,
      padding: CryptoJS.pad.Pkcs7,
    });
    return decrypted.toString(CryptoJS.enc.Utf8);
  } catch (err) {
    console.error("解密失败：", err);
    return "";
  }
}
